commonlibsse_ng\re\e/
ExtraUniqueID.rs

1use crate::re::BSCoreTypes::FormID;
2use crate::re::BSExtraData::{BSExtraData, BSExtraDataVtbl, DerivedBSExtraData};
3use crate::re::ExtraDataType::ExtraDataType;
4use crate::re::offsets_rtti::RTTI_ExtraUniqueID;
5use crate::re::offsets_vtable::VTABLE_ExtraUniqueID;
6use crate::rel::id::VariantID;
7
8#[repr(C)]
9#[derive(Debug, PartialEq)]
10pub struct ExtraUniqueID {
11    pub __base: BSExtraData,
12    pub baseID: FormID,
13    pub uniqueID: u16,
14    pub pad16: u16,
15}
16
17const _: () = {
18    assert!(core::mem::offset_of!(ExtraUniqueID, __base) == 0x0);
19    assert!(core::mem::offset_of!(ExtraUniqueID, baseID) == 0x10);
20    assert!(core::mem::offset_of!(ExtraUniqueID, uniqueID) == 0x14);
21    assert!(core::mem::offset_of!(ExtraUniqueID, pad16) == 0x16);
22    assert!(core::mem::size_of::<ExtraUniqueID>() == 0x18);
23};
24
25impl DerivedBSExtraData for ExtraUniqueID {
26    #[inline]
27    fn get_extra_data(&self) -> &BSExtraData {
28        &self.__base
29    }
30
31    #[inline]
32    fn get_extra_data_type() -> ExtraDataType {
33        Self::EXTRA_DATA_TYPE
34    }
35}
36
37impl ExtraUniqueID {
38    /// Address & offset of the runtime type information (RTTI) identifier.
39    pub const RTTI: VariantID = RTTI_ExtraUniqueID;
40
41    /// Address & offset of the virtual function table.
42    pub const VTABLE: [VariantID; 1] = VTABLE_ExtraUniqueID;
43
44    /// The `ExtraDataType` value for health.
45    pub const EXTRA_DATA_TYPE: ExtraDataType = ExtraDataType::UniqueID;
46
47    /// Gets the extra data type, always returning `ExtraDataType::UniqueID`.
48    #[inline]
49    pub const fn get_type(&self) -> ExtraDataType {
50        ExtraDataType::UniqueID
51    }
52}
53
54/// The virtual function table for `ExtraUniqueID`.
55///
56/// This struct defines function pointers to simulate the C++ virtual functions.
57#[repr(C)]
58pub struct ExtraUniqueIDVtbl {
59    pub __base: BSExtraDataVtbl,
60}